perm filename PALIN.LST[S1,ALS]1 blob
sn#478123 filedate 1979-10-02 generic text, type T, neo UTF8
PASCAL/SAIL 1.1 6-SEP-79 COMPILATION LIST PRODUCED ON 02-OCT-79 AT 21:43:30 PAGE 1
1 C;
PASCAL/SAIL 1.1 6-SEP-79 COMPILATION LIST PRODUCED ON 02-OCT-79 AT 21:43:30 PAGE 2
1 (* $A+,D+*)
2
3 PROGRAM PALINDROME(OUTPUT);
4
5 CONST NUMMAX = 4; PALMAX = 69; NUMLIM = 5; PALLIM = 70;
6
7 VAR I, J, N, NUMVAL, PALVAL, CARRY : INTEGER;
8 NUM : ARRAY [1..NUMLIM] OF INTEGER;
9 PAL,PAL2 : ARRAY [1..PALLIM] OF INTEGER;
10
11 BEGIN
12 WRITELN (OUTPUT,
13 'NUM. ADDITIONS PALINDROME');
14 WRITELN (TTY,
15 'NUM. ADDITIONS PALINDROME');
16 FOR I := 1 TO PALMAX DO PAL[I] := 0;
17 FOR I := 1 TO NUMMAX DO NUM[I] := 0;
18 NUM [3] := 1; NUMVAL := 3; (* INITIAL CONDITIONS*)
19 WHILE NUMVAL <= NUMMAX DO
20 BEGIN (*WHILE NUMVAL <= NUMMAX*)
21 PALVAL := NUMVAL;
22 N := 0;
23 FOR I := 1 TO NUMVAL DO PAL[I] := NUM[I];
24 FOR I := NUMVAL + 1 TO PALMAX DO PAL[I] := 0;
25 WHILE PALVAL <= PALMAX DO
26 BEGIN (* WHILE PALVAL <= PALMAX*)
27 I := 1; J := PALVAL;
28 WHILE ((PAL[I] = PAL [J]) AND (I < J)) DO
29 BEGIN
30 I := I + 1; J := J - 1;
31 END;
32 IF I < J THEN (* NOT A PALINDROME*)
33 BEGIN
34 J := PALVAL; CARRY := 0;
35 FOR I := 1 TO PALVAL DO
36 BEGIN
37 PAL2[I] := PAL[I] + PAL[J] + CARRY;
38 IF PAL2[I] > 9 THEN
39 BEGIN
40 PAL2[I] := PAL2[I] - 10; CARRY := 1;
41 END
42 ELSE CARRY := 0;
43 J := J - 1;
44 END;
45 IF CARRY = 1 THEN
46 BEGIN
47 PALVAL := PALVAL +1;
48 PAL2[PALVAL] := 1;
49 CARRY := 0;
50 END;
51 IF PALVAL = PALMAX + 1 THEN
52 BEGIN
53 FOR I := NUMVAL + 1 TO NUMMAX DO
54 BEGIN
55 WRITE ( OUTPUT,' ');
56 WRITE ( TTY,' ');
57 END;
58 FOR I := NUMVAL DOWNTO 1 DO
59 BEGIN
60 WRITE (OUTPUT, NUM[I]:1);
61 WRITE (TTY, NUM[I]:1);
62 END;
63 WRITELN (OUTPUT,' NOT FOUND IN ',N:4,' ADDITIONS TO ',
64 PALLIM:2,' CHARACTERS.');
65 WRITELN (TTY,' NOT FOUND IN ',N:4,' ADDITIONS TO ',
66 PALLIM:2,' CHARACTERS.'); BREAK;
67 END
68 ELSE
69 BEGIN
70 FOR I := 1 TO PALVAL DO PAL[I] := PAL2[I];
71 N := N +1;
72 END;
73 END (* NOT A PALINDROME*)
74 ELSE IF N <= 9 THEN PALVAL := PALLIM (* DON'T BOTHER TO PRINT*)
75 ELSE
76 BEGIN (* A PALINDROME HAS BEEN FOUND*)
77 FOR I := NUMVAL + 1 TO NUMMAX DO
78 BEGIN
79 WRITE ( OUTPUT,' ');
80 WRITE ( TTY,' ');
81 END;
82 FOR I :=NUMVAL DOWNTO 1 DO
83 BEGIN
84 WRITE (OUTPUT, NUM[I]:1);
85 WRITE (TTY, NUM[I]:1);
86 END;
87 WRITE (OUTPUT,N:5);
88 WRITE (TTY,N:5);
89 FOR I := PALVAL + 1 TO PALMAX DO
90 BEGIN
91 WRITE ( OUTPUT,' ');
92 WRITE ( TTY,' ');
93 END;
94 FOR I := PALVAL DOWNTO 1 DO
95 BEGIN
96 WRITE (OUTPUT, PAL[I]:1);
97 WRITE (TTY, PAL[I]:1);
98 END;
99 WRITELN (OUTPUT);
100 WRITELN ( TTY); BREAK;
101 PALVAL := PALMAX +1; (* TO EFFECT EXIT FROM WHILE PALVAL < PALMAX*)
102 END (* A PALINDROME HAS BEEN FOUND*);
103 END (* WHILE PALVAL <= PALMAX*);
104 CARRY := 1;
105 FOR I := 1 TO NUMVAL DO
106 BEGIN
107 NUM[I] := NUM[I] +CARRY;
108 IF NUM[I] > 9 THEN
109 BEGIN
110 NUM[I] := NUM[I] - 10;
111 CARRY := 1;
112 END
113 ELSE CARRY := 0;
114 END;
115 IF CARRY = 1 THEN
116 BEGIN
117 NUMVAL := NUMVAL +1;
118 NUM[NUMVAL] := 1;
119 CARRY := 0;
120 END;
121 END (*WHILE NUMVAL <= NUMMAX*);
122 END.
0 ERROR(S) DETECTED
HIGHSEG: 0K + 516 WORD(S)
LOWSEG : 0K + 247 WORD(S)
RUNTIME: 00:00.459 ELAPSED: 00:00:19.2 3953 CHARS